package cc.zy.base.businesses.mapper;

import cc.zy.base.businesses.entity.Batch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 批次
 * Mapper
 *
 * @author Jiangjinlin
 * @date 2021-01-26 19:41:01
 */
public interface BatchMapper extends BaseMapper<Batch> {

    List<Batch> findBatchs();

    Batch findBatchsById(@Param("id") Integer id);

    /**
     * 方法描述：获取所有有效批次[id、名称]，倒序
     *
     * @return java.util.List<cc.zy.base.businesses.entity.Batch> 批次集合
     * @author LiPeng
     * @date 2021/3/6
     */
    List<Batch> selectBatchForSelect();

    /**
     * 方法描述：获取所有有效批次[id、名称]，倒序
     *
     * @return java.util.List<cc.zy.base.businesses.entity.Batch> 批次集合
     * @author LiPeng
     * @date 2021/3/6
     */
    List<Batch> selectBatchForWx();

    /**
     * 方法描述：根据学生信息获取当前学生有效批次[id、名称]，倒序
     *
     * @return java.util.List<cc.zy.base.businesses.entity.Batch> 批次集合
     * @author JIANGJINLIN
     * @date 2021/3/6
     */
    List<Batch> selectBatchByStuForWx(@Param("studentName") String studentName, @Param("identity") String identity);

    /**
     * 方法描述：根据学生信息获取当前学生有效批次[id、名称]，倒序不包含当前登录信息
     *
     * @return java.util.List<cc.zy.base.businesses.entity.Batch> 批次集合
     * @author JIANGJINLIN
     * @date 2021/3/6
     */
    List<Batch> selectBatchByStuButThisForWx(@Param("studentName") String studentName, @Param("identity") String identity, @Param("batchName") String batchName, @Param("studyTypeName") String studyTypeName);

    /**
     * @param page
     * @param batch
     * @param <T>
     * @return
     * @author huangjia
     * @date 2021/02/01
     * 批次查询分页
     */
    <T> IPage<Batch> findBatchDetailPage(Page<T> page, @Param("batch") Batch batch);

    /**
     * @param batch
     * @return
     * @author huangjia
     * @date 2021/02/01
     * 得到批次的分页总数
     */
    long countBatchDetail(@Param("batch") Batch batch);

    Integer findId(@Param("batchName") String batchName);

    List<Batch> findExistBatchName(@Param("batchName") String batchName, @Param("studyType") String studyType);
}